﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CLab.BusinessEntity;
using GandA.Component.DataAccess.SQLServer;
using CLab.Common.Constantes;
using System.Data;

namespace CLab.DAO
{
    public static class EstudioServiceDAO
    {
        public static int RegistraEstudio(Estudio est)
        {
            SQLParameterCollection paramsSql = new SQLParameterCollection();

            paramsSql.Add(new SQLParameter(Parametros.pnIdLaboratorio, est.IdLaboratorio, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.pnIdEstudio, est.IdEstudio, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.psNombreEstudio, est.NombreEstudio, SQLParameter.vEnumSqlDbType.VarChar, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.pnEsGenerico, est.EsGenerico, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.pnPrecio, est.Precio, SQLParameter.vEnumSqlDbType.Decimal, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.pnIdUsuarioMod, est.IdUsuarioMod, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.psIpMod, est.IpMod, SQLParameter.vEnumSqlDbType.VarChar, SQLParameter.vEnumParameterDirection.vInput));

            try
            {
                DataSet ds = new SQL().ExecuteQueryStoreProcedure("spGuardaEstudio", paramsSql);
                return CLab.Common.Util.Convert.ToInt(ds.Tables[0].Rows[0][Columnas.IdEstudio].ToString());
            }
            catch (SQLException ex)
            {
                throw new Exception(ex.Message);
            }
        }

        public static void EliminaEstudio(Estudio est)
        {
            SQLParameterCollection paramsSql = new SQLParameterCollection();

            paramsSql.Add(new SQLParameter(Parametros.pnIdLaboratorio, est.IdLaboratorio, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.pnIdEstudio, est.IdEstudio, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));

            try
            {
                DataSet ds = new SQL().ExecuteQueryStoreProcedure("spEliminaEstudio", paramsSql);
            }
            catch (SQLException ex)
            {
                throw new Exception(ex.Message);
            }
        }

        public static int RegistraCampo(Campo obj)
        {
            SQLParameterCollection paramsSql = new SQLParameterCollection();

            paramsSql.Add(new SQLParameter(Parametros.pnIdLaboratorio, obj.IdLaboratorio, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.pnIdEstudio, obj.IdEstudio, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.pnIdEstudio, obj.IdCampo, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.psNombreCampo, obj.NombreCampo, SQLParameter.vEnumSqlDbType.VarChar, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.pnIdCampo, obj.IdTipoCampo, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.pnEsRequerido, obj.EsRequerido, SQLParameter.vEnumSqlDbType.TinyInt, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.pnIdUsuarioMod, obj.IdUsuarioMod, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.psIpMod, obj.IpMod, SQLParameter.vEnumSqlDbType.VarChar, SQLParameter.vEnumParameterDirection.vInput));

            try
            {
                DataSet ds = new SQL().ExecuteQueryStoreProcedure("spGuardaCampo", paramsSql);
                return CLab.Common.Util.Convert.ToInt(ds.Tables[0].Rows[0][Columnas.IdEstudio].ToString());
            }
            catch (SQLException ex)
            {
                throw new Exception(ex.Message);
            }
        }

        public static void EliminaCampo(Campo obj)
        {
            SQLParameterCollection paramsSql = new SQLParameterCollection();

            paramsSql.Add(new SQLParameter(Parametros.pnIdLaboratorio, obj.IdLaboratorio, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.pnIdEstudio, obj.IdEstudio, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.pnIdCampo, obj.IdCampo, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));

            try
            {
                DataSet ds = new SQL().ExecuteQueryStoreProcedure("spEliminaCampo", paramsSql);
            }
            catch (SQLException ex)
            {
                throw new Exception(ex.Message);
            }
        }
    }
}
